There’s no other Caribbean destination like Cartagena, Colombia. Founded nearly 500 years ago, Cartagena de Indias (the city’s full name) grew into one of the richest towns in the Americas in the Spanish colonial era, and today it’s replete with old-world vestiges of its colonial origins. The best preserved evidence of that period is the opulent Spanish Colonial architecture of the city’s UNESCO-listed Old Town. Inside its walls, cobbled streets are lined with centuries-old mansions painted in vibrant hues, elegant arcades ring picturesque squares, and horse-drawn carriages navigate palm-fringed promenades by the shore.

But unique architecture isn’t the only reason Cartagena has been dubbed the “Jewel of the Caribbean.” This melting pot of Latin, Indigenous, Afro-Colombian, and Middle Eastern cultures is among the most dynamic cities in the hemisphere. As modern Cartagena continues to evolve, its fascinating contrasts prove that this vivacious city marches to the beat of its own drum.

Formerly neglected barrios like Getsemaní have experienced an art-fueled renaissance and culinary boom in recent years. Condos now soar into the sky in the glitzy Bocagrande district, a Miami Beach lookalike. And surrounding it all are some of the most gorgeous beaches and biodiverse habitats in the world. (Did you know that Colombia is home to more bird species than anywhere else?) Here’s how to sample it all in a four-day weekend.

{ let bidders = [‘a9’, ‘ix’, ‘iris’]; // create a requestManager to keep track of bidder state to determine when to send ad server // request and what amazonSlots to request from the ad server var requestManager = { adserverRequestSent: false, }; //loop through bidder array and add the bidders to the request manager: bidders.forEach( function( bidder ) { requestManager[bidder] = false; } ); // return true if all bidders have returned function allBiddersBack() { var allBiddersBack = bidders // get the booleans from the object .map( function( bidder ) { return requestManager[bidder]; } ) // get rid of false values – indicates that the bidder has responded .filter( Boolean ) // if length is equal to bidders, all bidders are back .length === bidders.length; return allBiddersBack; } // handler for header bidder responses function headerBidderBack( bidder ) { // return early if request to adserver is already sent if ( requestManager.adserverRequestSent === true ) { return; } // flip bidder back flag if ( bidder === ‘a9’ ) { requestManager.a9 = true; console.log(‘second promise a9 ready’); } else if ( bidder === ‘ix’ ) { requestManager.ix = true; console.log(‘second promise ix ready’); } else if ( bidder === ‘iris’ ) { requestManager.iris = true; console.log(‘second promise iris ready’); } // if all bidders are back, send the request to the ad server if ( allBiddersBack() ) { resolve( url ); } } if ( typeof apstag == ‘object’ && apstag ) { apstag.fetchBids({ slots: [{ slotID: window.prerollTag[vHash], mediaType: ‘video’ }] }, function( bids ) { console.log( “AMI jwp amazon bid callback”, new Date().getTime(), bids ); window.jwpBids[vHash].amazon = true; if ( bids.length >…

Continue reading

Leave a Reply

Your email address will not be published. Required fields are marked *